﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace Lilium.Reflection
{
	public static class CustomAttributeProviderExtensions
	{
		public static IEnumerable<TAttribute> GetCustomAttributes<TAttribute>(this ICustomAttributeProvider customAttributeProvider)
		{
			if (customAttributeProvider == null) throw new ArgumentNullException("customAttributeProvider");

			return customAttributeProvider.GetCustomAttributes(typeof(TAttribute), true).Cast<TAttribute>();
		}

		public static TAttribute FindCustomAttribute<TAttribute>(this ICustomAttributeProvider customAttributeProvider)
		{
			if (customAttributeProvider == null) throw new ArgumentNullException("customAttributeProvider");

			return customAttributeProvider.GetCustomAttributes(typeof(TAttribute), true).Cast<TAttribute>().FirstOrDefault();
		}
	}
}